home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 1.0 for Developers / QuickTime 1.0 for Developers.iso / Programming Stuff / Interfaces / Oldstyle C Interfaces / TimeBases.h < prev    next >
C/C++ Source or Header  |  1991-09-06  |  6KB  |  220 lines

  1. /*
  2.     File:        TimeBases.h
  3.     Copyright:    © 1990 by Apple Computer, Inc., all rights reserved.
  4. */
  5.  
  6. #ifndef _Timebases_
  7. #define _Timebases_
  8.  
  9. #if THINK_C == 1
  10.     #ifndef const
  11.         #define const
  12.     #endif const
  13. #endif
  14.  
  15.  
  16. #include "Components.h"
  17.  
  18. #ifndef kSmallestArray
  19.     #define kSmallestArray    1
  20. #endif
  21.  
  22. #ifndef kFix1
  23.     #define kFix1            (0x00010000)
  24. #endif
  25.  
  26. /* TimeBase equates */
  27.  
  28. typedef long TimeValue;
  29. typedef long TimeScale;        /* This is a way cool rational number:
  30.                              * q = (bottom-24-bits)/(high-8-bits + 1)
  31.                              * Think about it.  All integers less than
  32.                              * 2^24 are valid.
  33.                              */
  34.  
  35. #ifndef I64
  36. #define I64
  37. typedef struct
  38.     {
  39.     long hi;
  40.     long lo;
  41.     } Int64;
  42. #endif I64
  43.  
  44.  
  45. typedef Int64 CompTimeValue;
  46.  
  47. typedef enum
  48.     {
  49.     loopTimeBase = 1
  50.     } TimeBaseFlags;
  51.     
  52.  
  53.     typedef struct privateTimeRecord *TimeBase;
  54.     typedef struct privateCallBackRecord *QTCallBack;
  55.  
  56. typedef struct TimeRecord
  57.     {
  58.     CompTimeValue value;    /* units */
  59.     TimeScale scale;        /* units per second */
  60.     TimeBase base;
  61.     } TimeRecord;
  62.  
  63. /* CallBack equates */
  64.  
  65. typedef enum
  66.     {
  67.     triggerTimeFwd        = 0x0001,    /* when curTime exceeds triggerTime going forward */
  68.     triggerTimeBwd        = 0x0002,    /* when curTime exceeds triggerTime going backwards */
  69.     triggerTimeEither    = 0x0003,    /* when curTime exceeds triggerTime going either direction */
  70.     triggerRateLT        = 0x0004,    /* when rate changes to less than trigger value */
  71.     triggerRateGT        = 0x0008,    /* when rate changes to greater than trigger value */
  72.     triggerRateEqual    = 0x0010,    /* when rate changes to equal trigger value */
  73.     triggerRateLTE        = triggerRateLT | triggerRateEqual,
  74.     triggerRateGTE        = triggerRateGT | triggerRateEqual,
  75.     triggerRateNotEqual    = triggerRateGT | triggerRateEqual | triggerRateLT,
  76.     triggerRateChange    = 0
  77.     } QTCallBackFlags;
  78.  
  79. typedef enum
  80.     {
  81.     timeBaseBeforeStartTime = 1,
  82.     timeBaseAfterStopTime = 2
  83.     } TimeBaseStatus;
  84.  
  85. typedef enum
  86.     {
  87.     callBackAtTime = 1,
  88.     callBackAtRate = 2,
  89.     callBackAtTimeJump = 3,
  90.     callBackAtInterrupt = 0x8000
  91.     } QTCallBackType;
  92.  
  93. #if THINK_C == 1
  94.     typedef void (*QTCallBackProc)(QTCallBack cb, long CallBackParam);
  95. #else    
  96.     typedef pascal void (*QTCallBackProc)(QTCallBack cb, long CallBackParam);
  97. #endif
  98.  
  99. typedef enum {
  100.     qtcbNeedsRateChanges = 1,        /* wants to know about rate changes */
  101.     qtcbNeedsTimeChanges = 2        /* wants to know about time changes */
  102. };
  103.  
  104.     typedef struct QTCallBackHeader {
  105.         long                    callBackFlags;
  106.         long                    reserved1;
  107.         char                    qtPrivate[40];
  108.     } QTCallBackHeader;
  109.  
  110.  
  111.  
  112. /****************************************
  113. *                                        *
  114. *          T  I  M  E  B  A  S  E            *
  115. *                                        *
  116. ****************************************/
  117.  
  118. pascal TimeBase NewTimeBase(void)
  119.         = {0x303c,0xa5,0xaaaa};
  120. pascal void DisposeTimeBase(TimeBase tb)
  121.         = {0x303c,0xb6,0xaaaa};
  122.  
  123. pascal TimeValue GetTimeBaseTime(TimeBase tb,TimeScale s, TimeRecord *out)
  124.         = {0x303c,0xa6,0xaaaa};
  125. pascal void SetTimeBaseTime(TimeBase tb,const TimeRecord *in)
  126.         = {0x303c,0xa7,0xaaaa};
  127. pascal void SetTimeBaseValue(TimeBase tb,TimeValue t,TimeScale s)
  128.         = {0x303c,0xa8,0xaaaa};
  129.  
  130. pascal Fixed GetTimeBaseRate(TimeBase tb)
  131.         = {0x303c,0xa9,0xaaaa};
  132. pascal void SetTimeBaseRate(TimeBase tb, Fixed r)
  133.         = {0x303c,0xaa,0xaaaa};
  134.  
  135. pascal TimeValue GetTimeBaseStartTime(TimeBase tb,TimeScale s,TimeRecord *out)
  136.         = {0x303c,0xab,0xaaaa};
  137. pascal void SetTimeBaseStartTime(TimeBase tb,const TimeRecord *in)
  138.         = {0x303c,0xac,0xaaaa};
  139. pascal TimeValue GetTimeBaseStopTime(TimeBase tb,TimeScale s,TimeRecord *out)
  140.         = {0x303c,0xad,0xaaaa};
  141. pascal void SetTimeBaseStopTime(TimeBase tb,const TimeRecord *in)
  142.         = {0x303c,0xae,0xaaaa};
  143.  
  144. pascal long GetTimeBaseFlags(TimeBase tb)
  145.         = {0x303c,0xb1,0xaaaa};
  146. pascal void SetTimeBaseFlags(TimeBase tb,long f)
  147.         = {0x303c,0xb2,0xaaaa};
  148.  
  149. pascal void SetTimeBaseMasterTimeBase(TimeBase slave,TimeBase master,
  150.         const TimeRecord *slaveZero)
  151.         = {0x303c,0xb4,0xaaaa};
  152. pascal TimeBase GetTimeBaseMasterTimeBase(TimeBase tb)
  153.         = {0x303c,0xaf,0xaaaa};
  154. pascal void SetTimeBaseMasterClock(TimeBase slave,Component clockMeister,
  155.         const TimeRecord *slaveZero)
  156.         = {0x303c,0xb3,0xaaaa};
  157. pascal ComponentInstance GetTimeBaseMasterClock(TimeBase tb)
  158.         = {0x303c,0xb0,0xaaaa};
  159.  
  160. pascal void ConvertTime(TimeRecord *inout,TimeBase newBase)
  161.         = {0x303c,0xb5,0xaaaa};
  162. pascal void ConvertTimeScale(TimeRecord *inout,TimeScale newScale)
  163.         = {0x303c,0xb7,0xaaaa};
  164. pascal void AddTime(TimeRecord *dst,const TimeRecord *src)
  165.         = {0x303c,0x10c,0xaaaa};
  166. pascal void SubtractTime(TimeRecord *dst,const TimeRecord *src)
  167.         = {0x303c,0x10d,0xaaaa};
  168.  
  169. pascal long GetTimeBaseStatus(TimeBase tb,TimeRecord *unpinnedTime)
  170.         = {0x303c,0x10b,0xaaaa};
  171.  
  172. pascal void SetTimeBaseZero(TimeBase tb, TimeRecord *zero)
  173.         = {0x303c,0x128,0xaaaa};
  174.  
  175.  
  176. /****************************************
  177. *                                        *
  178. *          C  A  L  L  B  A  C  K             *
  179. *                                        *
  180. ****************************************/
  181.  
  182. pascal QTCallBack NewCallBack(TimeBase tb, short qtType)
  183.         = {0x303c,0xeb,0xaaaa};
  184.  
  185. pascal void DisposeCallBack(QTCallBack qtCall)
  186.         = {0x303c,0xec,0xaaaa};
  187.  
  188. pascal short GetCallBackType(QTCallBack qtCall)
  189.         = {0x303c,0xed,0xaaaa};
  190. pascal TimeBase GetCallBackTimeBase(QTCallBack qtCall)
  191.         = {0x303c,0xee,0xaaaa};
  192.  
  193. pascal OSErr CallMeWhen(QTCallBack qtCall, QTCallBackProc callBackProc, long refCon,
  194.                         long param1, long param2, long param3)
  195.         = {0x303c,0xb8,0xaaaa};
  196.  
  197. pascal void CancelCallBack(QTCallBack cb)
  198.         = {0x303c,0xb9,0xaaaa};
  199.  
  200.  
  201. /****************************************
  202. *                                        *
  203. *          C L O C K   C A L L B A C K      *
  204. *                S U P P O R T              *
  205. *                                        *
  206. ****************************************/
  207.  
  208. pascal OSErr AddCallBackToTimeBase(QTCallBack cb)
  209.         = {0x303c,0x129,0xaaaa};
  210. pascal OSErr RemoveCallBackFromTimeBase(QTCallBack cb)
  211.         = {0x303c,0x12a,0xaaaa};
  212. pascal QTCallBack GetFirstCallBack(TimeBase tb)
  213.         = {0x303c,0x12b,0xaaaa};
  214. pascal QTCallBack GetNextCallBack(QTCallBack cb)
  215.         = {0x303c,0x12c,0xaaaa};
  216. pascal void ExecuteCallBack(QTCallBack cb)
  217.         = {0x303c,0x12d,0xaaaa};
  218.  
  219. #endif _Timebases_
  220.